package com.attendance.www.hr.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.attendance.www.hr.beans.ReportAttendanceBean;
import com.attendance.www.hr.beans.ReportAttendanceParam;

public interface IReportService {
	
	/**
	 * 根据权限查报表
	 */
	public ReportAttendanceParam getReportByAuthority(ReportAttendanceParam paramBean, Integer employeeId);
	
	/**
	 * 翻页查询考勤报表基本信息
	 */
	public List<ReportAttendanceBean> getReportAttendanceBaseInfoList(ReportAttendanceParam paramBean);
	
	/**
	 * 取得员工(实际是：应出勤天数)
	 */
	public Map<Integer,Integer> getRealAttendanceDays(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 取得员工迟到次数
	 */
	public Map<Integer,Integer> getLateCount(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 取得员工早退次数
	 */
	public Map<Integer,Integer> getLeaveEarlyCount(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 取得员工旷工次数
	 */
	public Map<Integer,Integer> getAbsentCount(ReportAttendanceParam paramBean,List<Integer> employeeIds);

	/**
	 * 取得员工补签次数
	 */
	public Map<Integer,Integer> getRetroactiveCount(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 取得员工平日加班天数
	 */
	public Map<Integer,Float> getOvertimeNomal(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 取得员工双休日加班天数
	 */
	public Map<Integer,Float> getOvertimeWeekend(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 取得员工节假日加班天数
	 */
	public Map<Integer,Float> getOvertimeHoliday(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 取得员工请年假天数
	 */
	public Map<Integer,Float> getRestYearUsed(ReportAttendanceParam paramBean,List<Integer> employeeIds);

	/**
	 * 取得员工请假调休天数
	 */
	public Map<Integer,Float> getRestTuneUsed(ReportAttendanceParam paramBean,List<Integer> employeeIds);

	/**
	 * 取得员工请病假天数
	 */
	public Map<Integer,Float> getRestIllUsed(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 取得员工请事假天数
	 */
	public Map<Integer,Float> getRestThingUsed(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 取得员工请产检假天数
	 */
	public Map<Integer,Float> getRestCheckUsed(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 取得员工请产假天数
	 */
	public Map<Integer,Integer> getRestBornUsed(ReportAttendanceParam paramBean,List<Integer> employeeIds);

	/**
	 * 取得员工请哺乳假天数
	 */
	public Map<Integer,Float> getRestSuckleUsed(ReportAttendanceParam paramBean,List<Integer> employeeIds);

	/**
	 * 取得员工请婚假天数
	 */
	public Map<Integer,Integer> getRestMarryUsed(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 取得员工请丧假天数
	 */
	public Map<Integer,Integer> getRestDieUsed(ReportAttendanceParam paramBean,List<Integer> employeeIds);

	/**
	 * 取得员工请陪产假天数
	 */
	public Map<Integer,Integer> getRestBornAttendUsed(ReportAttendanceParam paramBean,List<Integer> employeeIds);

	/**
	 *  年假开始日期
	 */
	public Map<Integer,Date> getYearRestYearBegin(ReportAttendanceParam paramBean,List<Integer> employeeIds);

	/**
	 *  可享受年假
	 */
	public Map<Integer,Float> getYearRestYearAll(ReportAttendanceParam paramBean,List<Integer> employeeIds);

	/**
	 *  剩余调休假
	 */
	public Map<Integer,Float> getYearRestTuneRemain(ReportAttendanceParam paramBean,List<Integer> employeeIds);

	/**
	 *  可休产假
	 */
	public Map<Integer,Integer> getYearRestBornHave(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 已休产假天数
	 */
	public Map<Integer,Integer> getYearRestBornUsed(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
	/**
	 * 剩余产假天数
	 */
	public Map<Integer,Integer> getYearRestBornRemain(ReportAttendanceParam paramBean,List<Integer> employeeIds);
	
}
